<?php

class Application_Model_Page
{
  protected $_id;
  protected $_uri;
  protected $_full_uri;

  public function __construct(array $options = null) {
    if(is_array($options)){
      $this->setOptions($options);
    }
  }
  
  public function __set($name, $value) {
    $method = 'set' . $name;
    if(('mapper' == $name) || !method_exists($this, $method)){
      throw new Exception('Invlid page property');
    }
    $this->$method($value);
  }
  
  public function __get($name) {
    $method = 'get' . $name;
    if(('mapper' == $name) || !method_exists($this, $method)){
      throw new Exception('Invlid page property');
    }
    return $this->$method();
  }
  
  public function setOptions(array $options){
    $methods = get_class_methods($this);
    foreach ($options as $key => $value){
      $method = 'set' . ucfirst($key);
      if(in_array($method, $methods)){
        $this->$method($value);
      }
    }
    return $this;
  }
  
  public function setUri($uri){
    $this->_uri = (string) $uri;
    return $this;
  }
  
  public function getUri(){
    return $this->_uri;
  }
  
  public function setFull_uri($full_uri){
    $this->_full_uri = (string) $full_uri;
    return $this;
  }
  
  public function getFull_uri(){
    return $this->_full_uri;
  }
  
  public function setId($id){
    $this->_id = (int) $id;
    return $this;
  }
  
  public function getId(){
    return $this->_id;
  }
}

